package ar.edu.utn.frsf.tpae.a2012.g01.dao;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import ar.edu.utn.frsf.tpae.a2012.g01.model.MovimientoPago;

public class MovimientoPagoMockDao implements MovimientoPagoDao {

	private List<MovimientoPago> movimientosPago= new ArrayList<MovimientoPago>();
	
	@Override
	public MovimientoPago buscarMovimientoPagoPorId(Integer id) {
		for (MovimientoPago mp : movimientosPago)
		{
			if (mp.getMov_id() == id)
				return mp;
		}
		return null;
	}

	@Override
	public MovimientoPago buscarPorCodigo(String codigo) {
		for (MovimientoPago mp : movimientosPago)
		{
			if (mp.getCodigo().equalsIgnoreCase(codigo))
				return mp;
		}
		return null;
	}

	@Override
	public boolean eliminar(MovimientoPago movimientoPago) {
		int size= movimientosPago.size();
		for (int k= 0; k < size; k++)
		{
			if (movimientosPago.get(k).getMov_id() == movimientoPago.getMov_id())
			{
				movimientosPago.remove(k);
				return true;
			}
		}
		return false;
	}

	@Override
	public List<MovimientoPago> listarMovimientosPago() {
		return movimientosPago;
	}

	@Override
	public MovimientoPago persistir(MovimientoPago movimientoPago) throws Exception {
		Calendar cal= Calendar.getInstance();
		Date fechaActual= cal.getTime();
		if (this.buscarMovimientoPagoPorId(movimientoPago.getMov_id()) == null &&
				movimientoPago.getFecha().before(fechaActual))
		{
			movimientosPago.add(movimientoPago);
			return movimientoPago;
		}
		else
			throw new Exception();
	}
}
